草庐IT

Android PlusOneButton 不初始化

全部标签

Java泛型成员初始化

假设我有一个参数化的Java类,它包含一个私有(private)T_member。我想编写一个default构造函数(无参数),以某种方式将我的T_member初始化为某个已知的类型T特定值(例如-1表示整数,Float.MAX_VALUE表示float...)。那可能吗?我尝试了newT(),但编译器不喜欢那样。还是我什么都不做,保证会为我调用默认构造函数? 最佳答案 因为typeerasure,在运行时“没有T”。绕过它的方法是传递一个Class的实例进入构造函数,像这样:publicclassMyClass{T_member;

java - 为什么不在增强的 for 循环中初始化数组元素?

当我使用普通的for循环时,数组中的所有元素都会正常初始化:Object[]objs=newObject[10];for(inti=0;i但是当我使用for-each循环时。循环后数组元素仍然是null:Object[]objs=newObject[10];for(Objectobj:objs)obj=newObject();我认为obj指的是数组中的特定元素,所以如果我初始化它,数组元素也将被初始化。为什么没有发生这种情况? 最佳答案 Ithoughtobjreferstoaparticularelementinanarray,s

java - 初始化 block 可以抛出异常吗?

我在类中使用BufferedReader来读取文件。我试图在初始化block中初始化它。classReadFromFile{BufferedReaderbr;{br=newBufferedReader(newFileReader(newFile("file.txt")));}}初始化block中的行抛出FileNotFoundException异常。所以,编译器给出错误。我不想用try-catchblock包围它。我通过使用构造函数而不是初始化block解决了这个问题,比如:classReadFromFile{BufferedReaderbr;publicReadFromFile()t

java - 什么是 Java 中的对象字段初始化和构造函数顺序

我今天早些时候在代码中完成了以下场景(我承认这有点奇怪,我已经重构了)。当我运行单元测试时,我发现在运行父类(superclass)构造函数时未设置字段初始化。我意识到我不完全理解构造函数/字段初始化的顺序,所以我发帖希望有人向我解释这些发生的顺序。classFooextendsFooBase{Stringfoo="foobar";@Overridepublicvoidsetup(){if(foo==null){thrownewRuntimeException("fooisnull");}super.setup();}}classFooBase{publicFooBase(){setu

java - 加载、链接和初始化——什么时候加载一个类?

我对类加载的理解是,类在第一次需要时加载(用一种非常简单的方式来说)。使用-verbose:class和Iterators类的修改版本运行以下示例,该版本在调用其clinit时打印一条消息我观察到一些我无法真正解释的东西:publicclassIteratorsTest{publicstaticvoidmain(String[]args){com.google.common.collect.Iterators.forArray(1,2,3);}}(清理后的)输出如下:[Loadedcom.google.common.collect.Iteratorsfromfile:...][Load

java - 对于长度变化很大的输入,最佳 StringBuffer 初始容量是多少?

大家下午好,我正在使用java.lang.StringBuilder存储一些字符。我不知道我要提前存储多少个字符,除了:60%的情况下,它只有(恰好)7个字符39%的时间是(大约)3500个字符1%的时间,大约是20k个字符我们如何计算应该使用的最佳初始缓冲区长度?目前我正在使用newjava.lang.StringBuilder(4000)但那只是因为我以前懒得想。 最佳答案 这里有两个因素:时间和内存消耗。该时间主要受java.lang.AbstractStringBuilder.expandCapacity()调用次数的影响。

java - Jetty setInitParameter 没有初始化任何参数

我嵌入了Jetty,我正在尝试设置一个初始化参数。主类Main创建一个Cgi的servlet,它扩展了CGI.在Main中,我有以下代码:ServletContextHandlercontext2=newServletContextHandler(ServletContextHandler.SESSIONS);context2.setContextPath("/cgi");context2.setResourceBase("./cgi-bin");context2.setInitParameter("commandPrefix","perl");context2.addServlet(

Java:当 super 构造函数需要参数时如何初始化 child

我有classA{intvar;publicA(intx){var=x;}}classBextendsA{intvar2;publicB(intx,inty){super(...);var2=y;x=f(y);}}对于子类B,我需要计算在A的构造函数中使用的值x。如果我可以自由地将super移动到我的x=f(y)然后我可以将结果传递给A(super)的构造函数。但是super必须是B的构造函数中的第一行。有什么方法可以在第一次用正确的值初始化A吗?如果A.var是最终的并且我无法在构造后返回并更改它怎么办?当然,我可以放置super(f(y)),但我可以想象这会变得困难的情况。

java - 如何初始化Graphics g?

我想在吃bean人游戏结束后显示GameOver图像。但是我调用了paintGameOverScreen(Graphicsg)然后我需要初始化g。还有其他方法吗?这是我的生活课importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.image.BufferedImage;importjavax.imageio.ImageIO;importjavax.swing.ImageIcon;publicclassLives{privateintlives;publicLives(){live

java - spring mvc servlet初始化

我是springMVC的新手。我正在我的springmvc应用程序中寻找一个位置,在那里我可以初始化应用程序中的各种东西。通常我在主servlet的init()方法中这样做,但现在调度程序servlet是spring的,我无法覆盖init函数。什么是最佳实践?谢谢。 最佳答案 使用ServletContextListener并在web.xml中定义它:com.company.YourListenerClass(您创建了一个实现了ServletContextListener的类并实现了contextInitialized()方法,您在